package RapiWeb;

import RapiWeb.Evento.JP_Tabla_Evento;
import java.awt.GridLayout;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JPanel;

public class JP_Tabla extends JPanel {

    private JButton btn_Componente[][];
    private int int_Tabla[][];
    private int int_Fila;
    private int int_Columna;
    private JF_Principal principal;
    private Componente componente_Matrix[][];

    public JP_Tabla(JF_Principal principal, int int_fila, int int_columna) {
        this.principal = principal;
        this.int_Fila = int_fila;
        this.int_Columna = int_columna;
        componente_Matrix = new Componente[int_fila][int_columna];
        for (int i = 0; i < int_Fila; i++) {
            for (int j = 0; j < int_Columna; j++) {
                if (componente_Matrix[i][j] == null) {
                    componente_Matrix[i][j] = new Componente();
                }
            }
        }
        setLayout(new GridLayout(int_Fila, int_Columna));
        addComponentes();
    }

    /* ***********************************************************************
     ***               Sección de Setters y Getters                        ***
     *************************************************************************/
    /**
     *
     * @return btn_Componente[][]
     */
    public JButton[][] getBtn_Componente() {
        return btn_Componente;
    }

    public void setBtn_Componente(JButton[][] btn_Componente) {
        this.btn_Componente = btn_Componente;
    }

    public int[][] getInt_Tabla() {
        return int_Tabla;
    }

    public void setInt_Tabla(int[][] int_Tabla) {
        this.int_Tabla = int_Tabla;
    }

    public Componente[][] getComponente_Matrix() {
        return componente_Matrix;
    }

    public void setComponente_Matrix(Componente[][] componente_Matrix) {
        this.componente_Matrix = componente_Matrix;
    }

    public ArrayList<Componente> getLista_Componentes() {
        ArrayList<Componente> lista_componentes = new ArrayList<Componente>();
        for (int i = 0; i < int_Fila; i++) {
            for (int j = 0; j < int_Columna; j++) {
                if (componente_Matrix[i][j] != null) {
                    lista_componentes.add(componente_Matrix[i][j]);
                }
            }
        }
        return lista_componentes;
    }

    public int getInt_Fila() {
        return int_Fila;
    }

    public void setInt_Fila(int int_Fila) {
        this.int_Fila = int_Fila;
    }

    public int getInt_Columna() {
        return int_Columna;
    }

    public void setInt_Columna(int int_Columna) {
        this.int_Columna = int_Columna;
    }

    /**
     * ***********************************************************************
     *** Seccion de Metodos ***
     ************************************************************************
     */
    /**
     * Metodo para agragar los botones del panel
     */
    private void addComponentes() {
        int_Tabla = new int[int_Fila][int_Columna];
        btn_Componente = new JButton[int_Fila][int_Columna];
        for (int i = 0; i < int_Fila; i++) {
            for (int j = 0; j < int_Columna; j++) {
                int_Tabla[i][j] = 0;
                btn_Componente[i][j] = new JButton();
                btn_Componente[i][j].addActionListener(new JP_Tabla_Evento(principal, i, j));
                add(btn_Componente[i][j]);
            }
        }

    }

    /**
     * Metodo para obtener la tabla creada en ASP
     *
     * @return str_Tabla
     */
    public String m_ObtenerTablaASP() {
        String str_Tabla = "<table>\n";
        for (int i = 0; i < int_Fila; i++) {
            str_Tabla += "  <tr>\n";
            for (int j = 0; j < int_Columna; j++) {
                if (!componente_Matrix[i][j].getStr_CodigoASPX().equals("")) {
                    str_Tabla += "    <td>\n";
                    str_Tabla += "    " + componente_Matrix[i][j].getStr_CodigoASPX() + "\n";
                    str_Tabla += "    </td>\n";
                }
            }
            str_Tabla += "  </tr>\n";
        }
        str_Tabla += "</table>\n";
        str_Tabla=str_Tabla.replace("null", "");
        return str_Tabla;
    }
}